home *** CD-ROM | disk | FTP | other *** search
- ********************************************************************************
- *EXAMPLE 8 - CLEARING THE SCREEN *
- *AUTHOR - STUART BALL JULY 94 *
- *SCREEN MUST BE SET TO 256 COLOUR MODE FOR THIS EXAMPLE *
- ********************************************************************************
- SCREENROW: EQU $0106 WIDTH OF EACH SCREEN LINE
- DEVICELIST: EQU $08A8 THE ADDRESS OF DEVICELIST
- gdPMap_offset: EQU 22
- EXAMPLE8: MOVEM.L A5-A6,-(SP) SAVE MAC WORLD
- BSR INIT INITIALISE OUR VARIABLES
- BSR CLS CLEAR THE SCREEN
- MOVEM.L (SP)+,A5-A6 RESTORE MAC WORLD
- RTS
- ************************END OF EXAMPLE 8***************************************
-
- **INIT SETS UP OUR VARIABLES
- INIT: LEA MY_VARS(PC),A6 A6 IS OUR VARIABLE POINTER
- MOVE.L DEVICELIST,A0
- MOVE.L (A0),A0 POINT TO DEVICELIST
- MOVE.L A0,A1 COPY ADDRESS OF DEVICE LIST
- MOVE.L gdPMap_offset(A1),A1 A1=POINTER TO GDPMAP
- MOVE.L (A1),A1 gdPMap IN A1
- MOVE.W 10(A1),NUMB_OF_LINES(A6) SAVE NUMBER OF LINES
- MOVE.L (A1),VRAM_ADDR(A6) SAVE VRAM ABSOLUTE ADDRESS
- RTS
-
- **CLS CLEARS THE MAC SCREEN TOTALLY
- **PRESERVES ALL REGISTERS
- CLS: MOVEM.L D0-D2/A1,-(SP) SAVE REGS
-
- CLR.L D0
- CLR.L D1
- CLR.L D2
-
- MOVE.L VRAM_ADDR(A6),A1 VRAM ADDRESS IN A1
- MOVE.W NUMB_OF_LINES(A6),D0 NUMBER OF LINES ON SCREEN
- SUBQ.W #1,D0 DBcc ALWAYS LOOPS ONE MORE THAN THE COUNT
- MOVE.W SCREENROW,D1 WIDTH IN BYTES OF EACH LINE
- LSR.W #2,D1 DIVIDE BY FOUR AS WERE CLEARING LONGS
- SUBQ.W #1,D1 DBRA ALWAYS LOOPS 1 MORE THAN THE COUNT!
- MOVE.W D1,D2 SAVE SIZE OF LINE(IN BYTES)
-
- NEXT_LINE:
- CLEAR_LINE: CLR.L (A1)+ CLEAR THIS BYTE OF VRAM AND POINT TO NEXT
- DBRA D1,CLEAR_LINE CLEAR THIS LINE
- MOVE.W D2,D1 RESET BYTES/LINE COUNTER
- DBRA D0,NEXT_LINE CLEAR NEXT LINE
-
- MOVEM.L (SP)+,D0-D2/A1 RESTORE REGS
- RTS
-
- *********************************VARIABLES FOLLOW********************************
- MY_VARS: DS.B 20 SPACE FOR OUR VARIABLES
-
- ******************************OFFSETS INTO VARIABLES*****************************
- NUMB_OF_LINES: EQU 0 .W NUMBER OF PHYSICAL LINES ON SCREEN
- VRAM_ADDR: EQU 2 .L ABSOLUTE ADDRESS OF VRAM